import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
Vue.use(Vuex)

// 创建vuex仓库
const store = new Vuex.Store({
  // state 存储公共状态
  state: {
    num: 10,
    cates: []
  },
  // getters
  getters: {
    DOUBLE_NUM (state) {
      console.log('getter执行了')
      // 经过 state中不同数据各种计算 return计算结果
      return state.num * 2
    }
  },
  // 定义修改state的方法
  mutations: {
    ADD_NUM (state, n) {
      state.num += n
    },
    REDUCE_NUM (state, n) {
      state.num -= n
    },
    INIT_CATES (state, cates) {
      state.cates = cates
    }
  },
  actions: {
    FETCH_CATES (context, params) {
      /*
        参数1
        context就是store这个实例
        context.commit提交muatation
        参数2 可以省略
        action触发时携带参数，一般就是请求携带参数
      */
      //  发送异步请求
      axios.get('https://api.it120.cc/conner/shop/goods/category/all', {
        params
      }).then(res => {
        if (res.data.code === 0) {
          context.commit('INIT_CATES', res.data.data)
        }
      })
    }
  }
})
export default store
